package com.whzjkj.gateway.vo;

import com.alibaba.fastjson.annotation.JSONField;
import io.netty.channel.Channel;
import lombok.Data;

/**
 * @description: 数据包实体类
 * @author: Mr.Hu
 * @create: 2018-10-30 17:51
 **/
@Data
public class PackageData {

    /**
     * 消息头
     */
    private MessageHeader messageHeader;
    /**
     * 消息体
     */
    @JSONField(serialize=false)
    private byte[] messageBodyBytes;
    /**
     * 校验码 1byte
     */
    private int checkCode;

    @JSONField(serialize=false)
    private Channel channel;

    /**
     * @description: 消息头
     * @author: Mr.Hu
     * @create: 2018-10-30 17:53
     **/
    @Data
    public static class MessageHeader {
        //消息头 ID byte[0] 指令
        private int messageId;

        //消息体属性
        private int messageBodyProperty;
        //消息体长度
        private int messageBodyLength;
        //数据加密方式byte[10-12]
        // 当此三位都为0，表示消息体不加密，
        // 当第10位为1时，表示消息体经过RSA算法加密
        private int encryptionType;
        // 是否分包btye[13],true==>有消息包封装项, 即当消息头第13位为1时有消息包封装项
        protected boolean hasSubPackage;
        //保留项byte[14-15]
        private String reservedBit;

        //消息流水号
        private int messageFlowNo;
        //终端手机号
        private String terminalPhone;

        //////// =====消息包封装项
        // byte[12-15]
        private int packageInfoFild;
        // 消息包总数(word(16))
        private long totalSubPackage;
        // 包序号(word(16))这次发送的这个消息包是分包中的第几个消息包, 从 1 开始
        private long subPackageSeq;
    }
}
